1.v-for更新监测
能“改版原数组”的“数组方法”---导致v-for更新----页面更新
例如：push添加()/pop删除()/reverse翻转()/splice截取()----页面更新
例如：[下标]=值/slice()/forEach()---不会导致页面更新
目标结构之，直接变化，也会导致更新
v-for="item in  arr"
arr=重新赋予数组（数据劫持，没有走数组方法去更新，数据改变也会导致更新）
例如:改变数据元素
arr[0]=100---不会更新
arr.splice(0,1,100)---会更新

扩展
let ARR=[5,6,7,8]
let brr=[...ARR]//(赋值浅拷贝一个新数组)...展开运算符，他会把arr里的值展开放在原地形成一个新数组
相当于brr的值就是[5,6,7,8]


2发现某个值/属性页面不更新怎么办
Vue内置方法$set
作用：只需要修改某一项的时候，强制让页面更新
语法：this,$set(目标的接口，下标，新值)
例如：数组某个值this.$set(this,arr,5,'新来的')-----导致更新
例如：对象某个值this.$ser(this.obj,'name'(这个name是key属性),'新值')---对象属性值变化

3虚拟DOM
我们写template标签（模板）->虚拟DOM（js对象）----真实DOM

4.key属性
作用：提高更新时性能
效果：更形式，对比新旧DOM的差异，有key就用key对比，无key用标签名对比，找出差异更新DOM
使用：唯一不重复字符串或数字
口诀：有id用id，无id用索引
面试：key属性值不写和用索引，有区别诶
没有区别，索引连续的，挨着逐一对比顺序对比


5.动态样式
语法1：<标签 :class="{类名：布尔值}，{类名：布尔值}">
效果:布尔值为true 类名就生效
语法2:<标签 :style="{样式属性名：样式值}">
逐一：如果有多个，对象结构里用逗号隔开，键：值的格式往后写


6.计算属性
作用：属性值可以通过计算（编写代码）而得来的
场景(特点)口诀：当一个变量多 值，通过别人计算而得来时
语法
comuted:{
  '计算属性名'(){
    return ’值‘
  }
}
注意1：计算属性也是变量，所以不能和data重名，可以当做变量使用
注意2：计算属性是有缓存的，第二次使用变量值是，发西咸和第一次的值一样，不会在执行计算属性对应函数体
注意3:写在计算属性函数里（依赖项值变化了）计算属性会立刻重新计算并缓存新的结果
完整写法---展示用在全选/反选案例上
computed：{
  '计算属性名'：{
    set(val){}//给计算属性赋值，触发set执行，val变量里拿到的就是要被赋予的值
    get(){当计算竖向取值，要使用的时候，会触发get执行，return值给变量使用
    return ’值'}
  }
}
7侦听器watch
作用：侦听data/computed里定义变量，值的改变
语法:watch:{
  '要侦听的属性名'(新增变量名，旧值变量ing{

  })
}
注意：如果要侦听复杂数据类型(数组/对象里值改变)
watch:{
  '要侦听的属性名'：{
    deep:true
    handler(新值变量名，旧值变量名)
  }
}
8.axios的使用
作用：前后端通吃的网络请求库
前端：ajax，后端http模块-axios内部使用
特点：
1.支持Promise语法
promise是ES6新出的对象，异步管家，管理一个异步任务，取代和解决回调地狱问题，
如何解决？
.then()链式语法解决回调地狱（异步函数内在发起一个异步任务）
2.请求和响应过程的拦截器-统一的做出设置
什么是ajax原理=======浏览器window接口的XMLHttpRequest
axios是什么====基于原生ajax+Promise计数疯转通用于前端后端的请求库
 // axios()方法在原地留下一个promise对象（里面包含着一个原生异步的ajax请）